package com.rpframework.utils;

import java.util.ArrayList;
import java.util.List;

/**
 * 数组工具类
 */
public class Arrays {
    /**
     * 两个数组合并
     *
     * @param t1 数组1
     * @param t2 数组2
     * @return 合并后集合
     */
    public static <T> List<T> merge(T[] t1, T[] t2) {
        List<T> list = new ArrayList<>(java.util.Arrays.asList(t1));
        list.addAll(java.util.Arrays.asList(t2));
        return list;
    }

    /**
     * 两字符串数组的组合
     *
     * @param strs1 字符串数组1
     * @param strs2 字符串数组2
     * @return 组合后数组
     */
    public static String[] combination(String[] strs1, String[] strs2) {
        List<String> merge = merge(strs1, strs2);
        String[] strings = new String[merge.size()];
        merge.toArray(strings);
        List<String> stringList = new ArrayList<>();
        for (String str1 : strings) {
            for (String string : strings) {
                stringList.add(str1 + string);
            }
        }
        String[] stringCombinations = new String[stringList.size()];
        return stringList.toArray(stringCombinations);
    }

    /**
     * 数组添加
     *
     * @param ts  数组
     * @param t   延长大小
     * @param <T> 类型
     * @return 数组
     */
    @SafeVarargs
    public static <T> List<T> extend(T[] ts, T... t) {
        List<T> tList = java.util.Arrays.asList(ts);
        List<T> list = new ArrayList<>();
        list.addAll(tList);
        if (!ArrayUtils.isEmpty(t)) {
            List<T> listP = java.util.Arrays.asList(t);
            list.addAll(listP);
        }
        return list;
    }
}
